﻿using System;
using System.Net.NetworkInformation;
using System.Text;
using System.Xml;

namespace Leaf.NetCore.HotUpdate
{
    public class BaseBLL
    {
        #region 方法保存修改的设置

        /// <summary>
        ///     方法保存修改的设置
        /// </summary>
        /// <param name="ConnenctionString"></param>
        /// <param name="strKey"></param>
        public static void SaveConfig(string ConnenctionString, string strKey)
        {
            var doc = new XmlDocument();
            //获得配置文件的全路径
            var strFileName = AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;
            //找出名称为“add”的所有元素
            doc.Load(strFileName);
            var nodes = doc.GetElementsByTagName("add");
            for (var i = 0; i < nodes.Count; i++)
            {
                //获得将当前元素的key属性
                var att = nodes[i].Attributes["key"];
                //根据元素的第一个属性来判断当前的元素是不是目标元素
                if (att.Value == strKey)
                {
                    //对目标元素中的第二个属性赋值
                    att = nodes[i].Attributes["value"];
                    att.Value = ConnenctionString;
                    break;
                }
            }
            //保存上面的修改
            doc.Save(strFileName);
        }

        #endregion 方法保存修改的设置

        /// <summary>
        ///     是否能 Ping 通指定的主机
        /// </summary>
        /// <param name="ip">ip 地址或主机名或域名</param>
        /// <returns>true 通，false 不通</returns>
        public static bool Ping(string ip)
        {
            var p = new Ping();
            var options = new PingOptions();
            options.DontFragment = true;
            const string data = "Test Data!";
            var buffer = Encoding.ASCII.GetBytes(data);
            const int timeout = 1000; // Timeout 时间，单位：毫秒
            try
            {
                var reply = p.Send(ip, timeout, buffer, options);
                return reply != null && reply.Status == IPStatus.Success;
            }
            catch (Exception e)
            {
                //Log4Helper.Write("pingerr",e);
                return false;
            }
        }
    }
}